#ifndef __SERVER_API_H__
#define __SERVER_API_H__

#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <string.h>
#include <unistd.h>
#include <pthread.h>
#include <time.h>
#include <sqlite3.h>//数据库头文件

#define  ERRLOG(errmsg)  do{\
                                                                perror(errmsg);\
                                                                printf("%s-%s-%d\n", __FILE__, __func__, __LINE__);\
                                                                exit(1);\
                                                            }while(0)

sqlite3 *db;//定义数据库句柄
char *errmsg;
char histroy_name_do[256];
char histroy_name[128];
char time_s[128];

//线程传参结构体
typedef struct{
    int acceptfd;
    struct sockaddr_in clientaddr;
}MSG;


//封装传输信息结构体
typedef struct{
 int  id;	//工号
 int mode;//员工身份类型
 char  name[20]; //姓名账号
 char  pwd[20]; //登陆密码
 int age; //年龄
 char  phone[15]; //电话
 char  addr[128]; //家庭地址
 char  job[32]; //职位
 char  time[12]; //入职日期2015.10.23
 char  state[8]; //等级T1~T10
 int  salary;  //工资
}staff_info_TypeDef;//员工信息结构体

typedef struct{
 char cmd;//命令码
 char data[256];//信息
 int imode;//判断什么模式登录 0--root 1--user
 staff_info_TypeDef staff_info;//员工信息
 char history[256];
}Staff_Data_TypeDef;//员工管理结构体





//创建数据库表
void create_datebase();
//登录
void login_root(Staff_Data_TypeDef *sdt,int acceptfd);
void login_user(Staff_Data_TypeDef *sdt,int acceptfd);


//case判段root按人名查找
void name_find(Staff_Data_TypeDef *sdt,int acceptfd);
//case判断root查找所有
void each_all(Staff_Data_TypeDef *sdt,int acceptfd);


//判断root是修改操作,函数内部完成根据id修改姓名
void id_modify_info(Staff_Data_TypeDef *sdt,int acceptfd);
//判断root添加用户操作
void add_user(Staff_Data_TypeDef *sdt,int acceptfd);
//判断root删除用户操作
void delete_user(Staff_Data_TypeDef *sdt,int acceptfd);
//判断root查询历史记录操作
void search_histroy(Staff_Data_TypeDef *sdt,int acceptfd);
//本地时间
char *lock_time(void);
//插入历史信息表函数
void Insert_history_table(char *info);




//判断user查询操作
void user_search(Staff_Data_TypeDef *sdt,int acceptfd);
//判断user修改操作，函数内部完成id修改姓名
void user_id_modify_info(Staff_Data_TypeDef *sdt,int acceptfd);


#endif
